home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
-
- mac_menu.c: Copyright (c) Kevin Hammond 1993. All rights reserved.
-
- This module contains menu-handling code.
-
- *****************************************************************************/
-
- #include "mac.h"
- #include <Balloons.h>
-
- #pragma segment Menus
-
- typedef void (* cfunc) (short);
-
-
- extern Boolean copyscrap; /* Whether the scrap must be copied */
-
- /* Menu Handles */
-
- MenuHandle Menu_Apple, Menu_File, Menu_Edit, Menu_Find,
- Menu_Font, Menu_Option, Menu_Window, Menu_Project;
-
- extern Boolean closethewindow();
-
-
- /*
- The Apple Menu.
- */
-
- void DoMenuApple(item,modifiers)
- short item;
- short modifiers;
- {
- switch (item)
- {
- case MItem_About_Gofer: /* The About Gofer dialog. */
- {
- char s[11];
- long freemem, dummy;
- (void) MaxMem(&dummy);
- freemem = FreeMem();
- sprintf(s,"%lu",freemem/1024);
- paramtext(GoferVersionString,s,"","");
- Alert(Res_About_Gofer_Alert,NIL);
- }
- break;
-
- /* Other Apple Menu items */
- default:
- {
- Str255 DAName;
- GrafPtr SavePort;
-
- GetPort(&SavePort); /* save the current grafport */
- GetItem(Menu_Apple, item, DAName);
- OpenDeskAcc(DAName);
- SetPort(SavePort); /* restore it after opening DAs */
- }
- break;
- }
- }
-
-
-
- /*
- The File Menu.
- */
-
- void DoMenuFile(item,modifiers)
- short item;
- short modifiers;
- {
- thefrontwindow = findMyWindow(FrontWindow());
-
- cantundo();
-
- switch (item) {
- case MItem_New:
- CheckMemory("New Window",2048 /* Guess */);
- newUntitledWindow(); /* New window */
- break;
-
- case MItem_Open:
- Open_The_File(); /* Open a file */
- break;
-
- case MItem_Close:
- if(thefrontwindow == ILLEGAL_WINDOW)
- CloseDeskAcc(((WindowPeek)FrontWindow())->windowKind);
- else
- if(closethewindow(thefrontwindow,"closing"))
- ; /* Close a window */
- break;
-
- case MItem_Save:
- save(thefrontwindow); /* Save a window */
- break;
-
- case MItem_Save_As:
- saveas(thefrontwindow); /* Save with prompt */
- break;
-
- case MItem_Save_A_Copy:
- saveacopy(thefrontwindow); /* Save without changing filename */
- break;
-
- case MItem_Revert_to_Saved:
- revert(thefrontwindow); /* Restore old version */
- break;
-
- case MItem_Delete:
- dodelete(thefrontwindow); /* Delete Files */
- break;
-
- case MItem_Page_Setup:
- PageSetup(); /* Page setup for the printer */
- break;
-
- case MItem_Print:
- Print_Window(thefrontwindow); /* Print the window on the printer */
- break;
-
- case MItem_Quit:
- (void) QuitApp(kAEAskUser); /* Quit */
- break;
-
- default:
- break;
- }
- }
-
- /*
- The Edit menu.
- */
-
- void DoMenuEdit(item,modifiers)
- short item;
- short modifiers;
- {
- /* Allow DAs to handle their own edits */
-
- if (!SystemEdit(item-1))
- {
- thefrontwindow = findMyWindow(FrontWindow());
-
- switch (item)
- {
- case MItem_Undo: /* Undo */
- undo(thefrontwindow);
- break;
-
- case MItem_Cut: /* Cut */
- if(isEditWindow(thefrontwindow))
- {
- TEHandle teh = TEHANDLE(thefrontwindow);
- int memneeded = ((*teh)->selEnd - (*teh)->selStart)*2+4096;
- CheckMemory("Cut",memneeded);
- changed(thefrontwindow);
- saveundo(thefrontwindow);
- if(thefrontwindow == worksheet)
- AdjustPromptCount(TRUE);
- TECut(teh);
- copyscrap = TRUE;
- /* HSL: 7/23/92 -- we need to copy the TextEdit scrap to the System scrap */
- doscrap();
- AdjustScrollBars(thefrontwindow);
- ScrollToSelection(thefrontwindow);
- }
- else
- SysBeep(1);
- break;
-
- case MItem_Copy: /* Copy */
- if(isEditWindow(thefrontwindow))
- {
- TEHandle teh = TEHANDLE(thefrontwindow);
- int memneeded = (*teh)->selEnd - (*teh)->selStart+512;
- CheckMemory("Copy",memneeded);
- TECopy(teh);
- copyscrap = TRUE;
- doscrap();
- cantundo();
- }
- else
- SysBeep(1);
- break;
-
- case MItem_Paste: /* Paste */
- if(isEditWindow(thefrontwindow))
- {
- TEHandle teh = TEHANDLE(thefrontwindow);
- if((long) (*teh)->teLength + TEGetScrapLen() > TE_REC_SIZE)
- Error("","Clipboard too large to paste into window");
- else
- {
- CheckMemory("Paste",(TEGetScrapLen()+(*teh)->selEnd-(*teh)->selStart)*2+512);
- changed(thefrontwindow);
- /* Was keyundo, but this conflates pasting/typing */
- pasteundo(thefrontwindow);
-
- if(thefrontwindow == worksheet)
- {
- AdjustPromptCount(TRUE);
- TEPaste(TEHANDLE(thefrontwindow));
- AdjustPromptCount(FALSE);
- PasteInput();
- }
- else
- TEPaste(TEHANDLE(thefrontwindow));
- AdjustScrollBars(thefrontwindow);
- ScrollToSelection(thefrontwindow);
- }
- }
- else
- SysBeep(1);
- break;
-
- case MItem_Clear: /* Clear */
- if(isEditWindow(thefrontwindow))
- {
- changed(thefrontwindow);
- saveundo(thefrontwindow);
- if(thefrontwindow == worksheet)
- AdjustPromptCount(TRUE);
- TEDelete(TEHANDLE(thefrontwindow));
- AdjustScrollBars(thefrontwindow);
- ScrollToSelection(thefrontwindow);
- }
- break;
-
- case MItem_Select_All: /* Select All */
- if(isEditWindow(thefrontwindow))
- {
- /* Can't undo select all */
- cantundo();
- TESetSelect(0,32767,TEHANDLE(thefrontwindow));
- }
- break;
-
- case MItem_Show_Clipboard: /* Show/Hide Clipboard */
- showhideclipboard();
- break;
-
- default:
- break;
- }
- }
- }
-
-
-
- /*
- The Find menu.
- */
-
- void DoMenuFind(item,modifiers)
- short item;
- short modifiers;
- {
- thefrontwindow = findMyWindow(FrontWindow());
-
- /* Can't undo searches */
- cantundo();
-
- if(item <= MItem_Goto_Line && iconic(thefrontwindow))
- DeIconiseWindow(thefrontwindow);
-
- switch (item)
- {
- case MItem_Find_Replace:
- dofind(thefrontwindow);
- break;
-
- case MItem_Find_Again:
- dofindagain(thefrontwindow);
- break;
-
- case MItem_Find_Backwards:
- dofindbackwards(thefrontwindow);
- break;
-
- case MItem_Replace_Again:
- doreplaceagain(thefrontwindow);
- break;
-
- case MItem_Goto_Line:
- {
- int line = numdialog(Res_Dlg_Goto_Line,Res_DItem_Goto,1,1,32767);
- if(line > 0)
- findLine(thefrontwindow,line);
- }
- break;
-
- case MItem_Defn_Name:
- CheckMemory("Definition",32767 /* guess */);
- dofinddefn();
- break;
-
- case MItem_Defn_Names:
- CheckMemory("Definitions",32767 /* guess */);
- dofinddefns();
- break;
-
- case MItem_Defn_Type:
- CheckMemory("Type", 32767 /* guess */);
- dofindtype();
- break;
-
- case MItem_Defn_Types:
- CheckMemory("Types", 32767 /* guess */);
- dofindtypedefn();
- break;
-
- case MItem_Find_Error:
- CheckMemory("Find Error",1024 /* guess */);
- findError();
- break;
-
- default:
- break;
- }
- }
-
-
- /* The standard font sizes */
-
- static short FSizes[] = {9,10,12,14};
- #define NUM_FONTSIZES (sizeof(FSizes)/sizeof(short))
-
- /* Initial font settings for new windows */
- short currentfnum = monaco;
- short currentfsize = 9;
-
- /* The other font sizes dialog -- return 0 for failure */
- short dodlgfontsize()
- {
- static int lastsize = 18;
- int new = numdialog(Res_Dlg_Other_Size,Res_DItem_Other_Size,lastsize,6,100);
- if (new > 0)
- lastsize = new;
-
- return(new);
- }
-
-
-
- /*
- Update the front window to reflect a font change.
- */
-
- void updateFont(windex,fontnum,fontsize)
- int windex;
- short fontnum;
- short fontsize;
- {
- if(windex != ILLEGAL_WINDOW && TEHANDLE(windex)!=NIL)
- {
- Rect pr = WINDOW(windex)->portRect;
-
- TEHandle teh = TEHANDLE(windex);
- short topchar;
- FontInfo fontinfo;
-
- Boolean saveLock;
- GrafPtr saveport;
-
- CheckMemory("Change Font",2048 /* guess */);
-
- /* Prepare to start fiddling */
- GetPort(&saveport);
- SetPort(WINDOW(windex));
- SafeHLock((Handle)teh, &saveLock);
- topchar = (*teh)->lineStarts[GetCtlValue(VSCROLL(windex)) - 1];
-
- /* Invalidate the old viewrect */
- EraseRect(&(*teh)->viewRect);
- InvalRect(&(*teh)->viewRect);
-
- /* Set new font number info */
- if (fontnum >= 0)
- {
- TextFont(fontnum);
- (*teh)->txFont = fontnum;
- }
-
- /* Set new font size info */
- if (fontsize >= 0)
- {
- TextSize(fontsize);
- (*teh)->txSize = fontsize;
- }
-
- /* Request font info so we can install values into TE record */
- GetFontInfo(&fontinfo);
- (*teh)->fontAscent = fontinfo.ascent;
- (*teh)->lineHeight = fontinfo.ascent + fontinfo.descent + fontinfo.leading;
-
- /* Compute new rects */
- CalculateTERects(&(*teh)->viewRect, &(*teh)->destRect, (*teh)->lineHeight, windex == worksheet);
-
- /* Notify TE and our support systems */
- TECalText(teh);
- AdjustScrollBars(windex);
- ScrollCharacter(windex,topchar,FALSE);
-
- /* We're done */
- SafeHUnlock((Handle)teh, saveLock);
- SetPort(saveport);
- }
- }
-
- /*
- The Font Menu.
- */
-
- void DoMenuFont(item,modifiers)
- short item;
- short modifiers;
- {
- thefrontwindow = findMyWindow(FrontWindow());
-
- if (item < MItem_Font_Others)
- {
- setfontsize(FSizes[item-1]);
- updateFont(thefrontwindow,-1,FSizes[item-1]);
- }
-
- else if (item == MItem_Font_Others)
- {
- int newsize;
-
- /* If not cancelled, update the font size */
- if ((newsize = dodlgfontsize()) > 0)
- {
- setfontsize(newsize);
- updateFont(thefrontwindow,-1,newsize);
- }
- else
- return;
- }
-
- else if (item >= MItem_Font_Base)
- {
- setnewfont(item,"");
- updateFont(thefrontwindow,currentfnum,-1);
- }
-
- /* Can't currently undo; should really be able to */
- cantundo();
- }
-
-
-
-
-
- /*
- Set a new font for the current port.
- Either item or fname can be used to specify the font.
- */
-
- setnewfont(item,fname)
- short item; char *fname;
- {
- static oldfitem = 0;
- char font[256];
-
- if(item <= 0)
- {
- short fonts = CountMItems(Menu_Font);
- short i;
-
- for (i=MItem_Font_Base; i <= fonts; ++i)
- {
- getitem(Menu_Font,i,font);
-
- if(strcmp(font,fname)==0)
- break;
- }
-
- if(i > fonts)
- {
- Error("Internal ","the selected font cannot be found");
- for (i=MItem_Font_Base; i <= fonts; ++i)
- {
- getitem(Menu_Font,i,font);
-
- if(strcmp(font,"Monaco")==0)
- break;
- }
- }
- item = i;
- }
- else
- getitem(Menu_Font,item,font);
-
- if (oldfitem >= 1)
- CheckItem(Menu_Font,oldfitem,FALSE);
-
- CheckItem(Menu_Font,item,TRUE);
- oldfitem = item;
-
- getfnum(font,¤tfnum);
-
- outlinefontsizes(currentfnum);
- }
-
-
- /*
- Set the size of the font in the front window.
- */
-
- setfontsize(size)
- short size;
- {
- short i;
-
- /* Check the size if it's one of the standard ones */
- for(i=0;i<NUM_FONTSIZES;++i)
- CheckItem(Menu_Font,i+1,FSizes[i]==size);
-
- currentfsize = size;
- }
-
-
-
- /*
- Outline the font sizes available for the currently
- selected font.
- */
-
-
- outlinefontsizes(fnum)
- short fnum;
- {
- short i;
-
- for(i=0; i < NUM_FONTSIZES; ++i)
- SetItemStyle(Menu_Font,i+1,RealFont(fnum,FSizes[i])?outline:normal);
- }
-
-
-
- /*
- The Options menu.
- */
-
- void DoMenuOption(item,modifiers)
- short item;
- short modifiers;
- {
- extern Boolean HiddenPrefsChanged;
-
- cantundo();
-
- if (item <= Option_Toggle_Limit)
- dotoggle(item);
-
- else switch (item)
- {
- case MItem_Heap:
- domemorydialog();
- HiddenPrefsChanged = TRUE;
- break;
-
- case MItem_Evidence:
- doevidencedialog();
- HiddenPrefsChanged = TRUE;
- break;
-
- case MItem_Arcana:
- doarcanadialog();
- HiddenPrefsChanged = TRUE;
- break;
-
- case MItem_Save_Prefs:
- SavePrefs();
- break;
- }
- }
-
-
- /*
- The window menu.
- */
-
-
- void DoMenuWindow(item,modifiers)
- short item;
- short modifiers;
- {
- cantundo();
- switch (item)
- {
- case MItem_Help:
- Alert(Res_Help_Alert,NIL);
- break;
-
- case MItem_Iconise:
- {
- int windex = findMyWindow(FrontWindow());
-
- if(modifiers & optionKey)
- IconiseAll();
-
- else if(iconic(windex))
- DeIconiseWindow(windex);
-
- else
- IconiseWindow(windex);
- }
- break;
-
- /* Open the window corresponding to this item */
- default:
- {
- char windowname[256];
- getitem(Menu_Window,item,windowname);
- openwindowcalled(windowname);
- }
- break;
- }
- }
-
-
-
- /*
- The Project menu.
- */
-
- void DoMenuProject(item,modifiers)
- short item;
- short modifiers;
- {
- cantundo();
- switch (item)
- {
- case MItem_Clear_Project:
- clearProject();
- break;
-
- case MItem_Open_Project:
- openProject();
- break;
-
- case MItem_Save_Project:
- saveProject();
- break;
-
- case MItem_Save_Project_As:
- saveProjectAs();
- break;
-
- case MItem_Load_File:
- loadProjectFile();
- break;
-
- case MItem_Unload_File:
- unloadProjectFile();
- break;
-
- case MItem_Reload:
- reloadProjectFiles();
- break;
-
- case MItem_Reorder:
- rearrangeProjectFiles();
- break;
-
- default:
- findProjectFile(item);
- break;
- }
- }
-
-
-
- /* HSL: 7/6/92, 7/7/92, 7/8/92, 7/25/92 -- certain commands should be enabled and disabled dynamically */
- void AdjustMenus(activate)
- Boolean activate;
- {
- extern Boolean running_interpreter;
- extern int MultiTasking;
-
- if(thefrontwindow == ILLEGAL_WINDOW)
- {
- if(!activate)
- return;
-
- /* Disable the non-edit, non-file menus */
- disablemenuitem(true,Menu_Find,0);
- disablemenuitem(true,Menu_Font,0);
- disablemenuitem(true,Menu_Option,0);
- disablemenuitem(true,Menu_Window,0);
- disablemenuitem(true,Menu_Project,0);
-
- /* Enable the standard edit menu items */
- disablemenuitem(false,Menu_Edit,MItem_Undo);
- disablemenuitem(false,Menu_Edit,MItem_Copy);
- disablemenuitem(false,Menu_Edit,MItem_Cut);
- disablemenuitem(false,Menu_Edit,MItem_Clear);
- disablemenuitem(false,Menu_Edit,MItem_Paste);
- disablemenuitem(true,Menu_Edit,MItem_Select_All);
- disablemenuitem(true,Menu_Edit,MItem_Show_Clipboard);
- setitem(Menu_Edit,MItem_Undo,"Undo");
-
- /* Enable the standard File menu items */
- disablemenuitem(false,Menu_File,MItem_New);
- disablemenuitem(false,Menu_File,MItem_Open);
- disablemenuitem(false,Menu_File,MItem_Close);
-
- /* And Disable the rest */
- disablemenuitem(true,Menu_File,MItem_Save);
- disablemenuitem(true,Menu_File,MItem_Save_As);
- disablemenuitem(true,Menu_File,MItem_Revert_to_Saved);
- disablemenuitem(true,Menu_File,MItem_Delete);
- disablemenuitem(true,Menu_File,MItem_Page_Setup);
- disablemenuitem(true,Menu_File,MItem_Print);
-
- /* Now refresh the menu bar */
- DrawMenuBar();
- }
- else
- {
- if(activate)
- {
- Boolean evaluating = running_interpreter && !MultiTasking;
-
- /* Reset the standard menus unless we're evaluating */
- disablemenuitem(evaluating,Menu_File,0);
- disablemenuitem(evaluating,Menu_Edit,0);
- disablemenuitem(evaluating,Menu_Find,0);
- disablemenuitem(evaluating,Menu_Font,0);
- disablemenuitem(evaluating,Menu_Option,0);
- disablemenuitem(evaluating,Menu_Window,0);
- disablemenuitem(evaluating,Menu_Project,0);
- disablemenuitem(evaluating,Menu_Edit,MItem_Show_Clipboard);
- setitem(Menu_Edit,MItem_Undo,"Can't Undo");
- disablemenuitem(true,Menu_Edit,MItem_Undo);
-
- /* And the standard file options */
- disablemenuitem(false,Menu_File,MItem_Save);
- disablemenuitem(false,Menu_File,MItem_Save_As);
- disablemenuitem(false,Menu_File,MItem_Revert_to_Saved);
- disablemenuitem(false,Menu_File,MItem_Delete);
- disablemenuitem(false,Menu_File,MItem_Page_Setup);
- disablemenuitem(false,Menu_File,MItem_Print);
-
- /* Now refresh the menu bar */
- DrawMenuBar();
- }
-
- if(activate || running_interpreter)
- {
- /* Disable project items if running the interpreter */
- disablemenuitem(running_interpreter,Menu_Project,MItem_Clear_Project);
- disablemenuitem(running_interpreter,Menu_Project,MItem_Open_Project);
- disablemenuitem(running_interpreter,Menu_Project,MItem_Save_Project);
- disablemenuitem(running_interpreter,Menu_Project,MItem_Save_Project_As);
- disablemenuitem(running_interpreter,Menu_Project,MItem_Load_File);
- disablemenuitem(running_interpreter || CountMItems(Menu_Project) == PreludeItem,
- Menu_Project,MItem_Unload_File);
- disablemenuitem(running_interpreter,Menu_Project,MItem_Reload);
- disablemenuitem(running_interpreter || CountMItems(Menu_Project) < PreludeItem + 2,
- Menu_Project,MItem_Reorder);
- }
-
- if (isEditWindow(thefrontwindow))
- {
- /* Set up edit window menus */
- TEHandle teh = TEHANDLE(thefrontwindow);
- Boolean noSelection = (**teh).selStart == (**teh).selEnd;
- long dummyOffset;
- Boolean noScrap = GetScrap(NULL, 'TEXT', &dummyOffset) <= 0;
-
- disablemenuitem(noSelection,Menu_Edit,MItem_Copy);
- disablemenuitem(noSelection,Menu_Edit,MItem_Cut);
- disablemenuitem(noSelection,Menu_Edit,MItem_Clear);
- disablemenuitem(noScrap,Menu_Edit,MItem_Paste);
- disablemenuitem(false,Menu_Edit,MItem_Select_All);
-
- /* Set the save and save as menus */
- disablemenuitem(SAVED(thefrontwindow),Menu_File,MItem_Save);
- disablemenuitem(VIRGIN(thefrontwindow),Menu_File,MItem_Revert_to_Saved);
- }
-
- else if (activate)
- {
- disablemenuitem(true,Menu_Edit,MItem_Cut);
- disablemenuitem(true,Menu_Edit,MItem_Copy);
- disablemenuitem(true,Menu_Edit,MItem_Paste);
- disablemenuitem(true,Menu_Edit,MItem_Clear);
- disablemenuitem(true,Menu_Edit,MItem_Select_All);
-
- disablemenuitem(!iconic(thefrontwindow),Menu_File,MItem_Save);
- disablemenuitem(!iconic(thefrontwindow),Menu_File,MItem_Save_As);
- disablemenuitem(!iconic(thefrontwindow),Menu_File,MItem_Revert_to_Saved);
- }
- }
- }
-
-
-
- /*
- Disable/enable all menus.
- */
-
-
- disablemenus(disable)
- Boolean disable;
- {
- disablemenuitem(disable,Menu_File,0);
- disablemenuitem(disable,Menu_Edit,0);
- disablemenuitem(disable,Menu_Find,0);
- disablemenuitem(disable,Menu_Font,0);
- disablemenuitem(disable,Menu_Option,0);
- disablemenuitem(disable,Menu_Window,0);
- disablemenuitem(disable,Menu_Project,0);
- DrawMenuBar();
- }
-
-
- Handle HiddenMenuBar = NIL;
-
- /* Hide all the menus -- used for graphics programs */
- HideMenus(hide)
- int hide;
- {
- if(hide)
- {
- if(HiddenMenuBar != NIL)
- DisposeHandle(HiddenMenuBar);
- HiddenMenuBar = GetMenuBar();
- ClearMenuBar();
- DrawMenuBar();
- }
- else if(HiddenMenuBar != NIL)
- {
- SetMenuBar(HiddenMenuBar);
- DisposeHandle(HiddenMenuBar);
- HiddenMenuBar = NIL;
- DrawMenuBar();
- }
- }
-
- /*
- Choose the appropriate menu handler.
- */
-
- #if !THINKC
- ProcPtr Mhandlers [] =
- {
- DoMenuApple, DoMenuFile, DoMenuEdit, DoMenuFind,
- DoMenuFont, DoMenuOption, DoMenuWindow, DoMenuProject
- };
-
- #else
-
- cfunc Mhandlers [] =
- {
- (cfunc) DoMenuApple, (cfunc) DoMenuFile, (cfunc) DoMenuEdit,
- (cfunc) DoMenuFind, (cfunc) DoMenuFont, (cfunc) DoMenuOption,
- (cfunc) DoMenuWindow, (cfunc) DoMenuProject
- };
- #endif
-
-
- Handle_Gofer_Menu(menu,item,modifiers)
- short menu;
- short item;
- short modifiers;
- {
- if(menu == kHMHelpMenuID)
- DoMenuWindow(MItem_Help);
-
- /* Otherwise, if not a Gofer menu, just return */
- if(menu < MENUBASE || menu > Res_Menu_Project )
- return;
-
- /* Flash Menu bar */
- HiliteMenu(menu);
-
- if(thefrontwindow != ILLEGAL_WINDOW && TEHANDLE(thefrontwindow) != NIL)
- TEDeactivate(TEHANDLE(thefrontwindow));
-
- (*Mhandlers[menu-MENUBASE])(item,modifiers);
-
- if(thefrontwindow != ILLEGAL_WINDOW && TEHANDLE(thefrontwindow) != NIL)
- TEActivate(TEHANDLE(thefrontwindow));
-
- /* Disable highlighting unless we are quitting */
- if(!quit)
- HiliteMenu(0); /* Turn menu selection off */
- }
-
-
- Init_Gofer_Menus()
- {
- MenuHandle Menu_Help;
- extern short systemVersion;
-
- ClearMenuBar();
-
- Menu_Apple = GetMenu(Res_Menu_Apple);
- InsertMenu (Menu_Apple,0);
- AddResMenu(Menu_Apple,'DRVR'); /* Insert any DAs */
-
- Menu_File = GetMenu(Res_Menu_File);
- InsertMenu (Menu_File,0);
-
- Menu_Edit = GetMenu(Res_Menu_Edit);
- InsertMenu (Menu_Edit,0);
-
- Menu_Find = GetMenu(Res_Menu_Find);
- InsertMenu (Menu_Find,0);
-
- Menu_Font = GetMenu(Res_Menu_Font);
- InsertMenu (Menu_Font,0);
- AddResMenu (Menu_Font,'FONT');
-
- Menu_Option = GetMenu(Res_Menu_Options);
- InsertMenu (Menu_Option,0);
-
- Menu_Window = GetMenu(Res_Menu_Window);
- InsertMenu (Menu_Window,0);
-
- Menu_Project = GetMenu(Res_Menu_Project);
- InsertMenu (Menu_Project,0);
- insmenuitem(Menu_Project,"(-",PreludeItem-1);
-
-
- if(systemVersion >= 0x0700 && HMGetHelpMenuHandle(&Menu_Help) == noErr && Menu_Help != NIL)
- appendmenu(Menu_Help,"MacGofer Help");
-
- DrawMenuBar(); /* Draw the menu bar */
- }
-
-
- /*
- Find a menu item for item in the range from..count
- of the menu specified.
- */
-
- short findmenuitem(menu,from,count,item)
- MenuHandle menu;
- int from, count;
- char *item;
- {
- char menuname[256];
- short i;
- short max = CountMItems(menu);
-
- for (i=(short)from; i <= max && i <= (short) (from+count); ++i)
- {
- getitem(menu,(short)i,menuname);
- if(strcmp(item,menuname)==0)
- return(i);
- }
- return(-1);
- }
-
-
- SetModifiedMenus(modifiers)
- short modifiers;
- {
- char *iconise = (modifiers & optionKey) ? "Iconise All…":
- iconic(thefrontwindow) ? "DeIconise":"Iconise";
-
- setitem( Menu_Window, MItem_Iconise, iconise);
- }
-